// src/api/axiosInstance.ts
import axios, {AxiosError, AxiosResponse} from 'axios';

// 创建 Axios 实例
const axiosInstance = axios.create({
    timeout: 10000,
});

// 添加响应拦截器
axiosInstance.interceptors.response.use(
    (response: AxiosResponse<Result<any>>) => {
        // 对响应数据做点什么
        if (response.data.status !== '0') {
            console.error(response.data.msg)
        }

        // 例如，只返回实际的数据部分，简化组件中的使用
        return response.data.data;
    },
    (error: AxiosError) => {
        // 对响应错误做点什么
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 处理未授权的情况，如跳转到登录页
                    console.error('未授权，请重新登录');
                    break;
                case 404:
                    console.error('请求的资源未找到');
                    break;
                case 500:
                    console.error('服务器内部错误');
                    break;
                default:
                    console.error('发生未知错误');
            }
        } else if (error.request) {
            // 请求已发出，但没有收到响应
            console.error('无响应，请检查网络连接');
        } else {
            // 其他错误
            console.error('请求设置错误', error.message);
        }
        return Promise.reject(error);
    }
);

export default axiosInstance;

export interface Result<T> {
    msg: string
    status: string
    data: T
}